8881. Равнобедренный треугольник

 

Заданы три натуральных числа a, b и c. Определите, существует ли равнобедренный треугольник с длинами этих сторон.

 

Вход. Три натуральных числа a, b и c.

 

Выход. Выведите сумму заданных чисел, если существует равнобедренный треугольник с длинами сторон a, b, c и No в противном случае.

 

Пример входа 1

Пример выхода 1

7 7 3

17

 

 

Пример входа 2

Пример выхода 2

4 6 9

No

 

 

РЕШЕНИЕ

условный оператор

 

Анализ алгоритма

Треугольник является равнобедренным, если хотя бы две его стороны равны. То есть следует проверить выполнение условия:

if (a == b || b == c || a == c)

Однако в задаче также следует проверить условие существования треугольника. А именно то, что сумма двух любых сторон больше третьей:

if (a + b > c && a + c > b && b + c > a)

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d %d", &a, &b, &c);

 

Если треугольник невырожденный и равнобедренный, то выводим его периметр.

 

if ((a == b || b == c || a == c) &&

     a + b > c && a + c > b && b + c > a)

  printf("%d\n", a + b + c);

else

  printf("No\n");

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int a = con.nextInt();

    int b = con.nextInt();

    int c = con.nextInt();

 

    if ((a == b || b == c || a == c) &&

         a + b > c && a + c > b && b + c > a)

      System.out.println(a + b + c);

    else

      System.out.println("No");

    con.close();

  }

}

 

Python реализация

Читаем входные данные.

 

a, b, c = map(int, input().split())

 

Если треугольник невырожденный и равнобедренный, то выводим его периметр.

 

if (a == b or b == c or a == c) and

    a + b > c and a + c > b and b + c > a:

  print(a + b + c)

else:

  print("No")